java 스 레 드 상세 및 스 레 드 와 프로 세 스 의 차이
1.프로 세 스 와 스 레 드
모든 프로 세 스 는 하나의 메모리 공간 을 독점 합 니 다.하나의 프로그램 은 여러 프로 세 스 를 동시에 시작 할 수 있 습 니 다.예 를 들 어 IE 브 라 우 저 는 Ie 브 라 우 저 를 열 면 프로 세 스 를 시작 하 는 것 과 같다.
스 레 드 는 프로 세 스 의 실행 프로 세 스 를 말 합 니 다.하나의 프로 세 스 는 여러 스 레 드 를 포함 할 수 있 습 니 다.
모든 프로 세 스 는 운영 체제 가 독립 된 메모리 공간 을 할당 해 야 하 며,같은 프로 세 스 의 여러 스 레 드 가 이 공간 을 공유 해 야 합 니 다.즉,메모리 등 자원 을 공유 하 는 것 입 니 다.
자바.exe 를 호출 할 때마다 운영 체 제 는 자바 가상 컴퓨터 프로 세 스 를 시작 합 니 다.자바 가상 컴퓨터 프로 세 스 를 시작 할 때 자바 가상 컴퓨터 는 메 인 스 레 드 를 만 듭 니 다.이 스 레 드 는 프로그램 입구 main 방법 부터 실 행 됩 니 다.
자바 가상 머 신 은 스 레 드 를 시작 할 때마다 이 스 레 드 에 스 레 드 방법 스 택 을 할당 하여 관련 정 보 를 저장 합 니 다(예 를 들 어 부분 변수 등).스 레 드 는 이 스 택 에서 실 행 됩 니 다.그래서 자바 대상 의 부분 변 수 는 모두 스 레 드 가 안전 하지만 인 스 턴 스 변수 와 클래스 변 수 는 스 택 에 저장 되 어 있 지 않 기 때문에 스 레 드 가 안전 하지 않 습 니 다.
프로 세 스 는 세 가지 상태 가 있 습 니 다.준비,실행,차단.
2.스 레 드 생 성 방식
Runnable 방식:(이 방식 은 유연 하고 추천 합 니 다)
public class Thread02 implements Runnable {
public static void main(String[] args) {
Runnable r = new <strong>Thread02</strong>();
Thread t1 = new Thread(<strong>r</strong>, "t1");
/**
* Thread
* public Thread(Runnable target, String name) {
init(null, target, name, 0);
}
*/
Thread t2 = new Thread(r, "t2");
t1.start(); // t1, , cpu
t2.start(); // t2, , cpu
t1.run(); // main t1 run
}
public void run() {
System.out.println("thread's name is "
+ Thread.currentThread().getName());
}
}
실행 결 과 는 다음 과 같 습 니 다:
thread's name is t1
thread's name is main
thread's name is t2
Thead 방식
public class Thread03 extends Thread {
public static void main(String[] args) {
Thread03 t1 = new <strong>Thread03</strong>(); // Thread t1=new Thread() :Thread03
t1.start();
}
public void run() {
System.out.println("thread's name is "
+ Thread.currentThread().getName());
}
}
실행 결과:thread's name is Thread-0메모:프로그램 이 실 행 될 때마다 사용자 정의 스 레 드 외 에 main 스 레 드 가 있 습 니 다.
종합:
public class Thread01 {
public static void main(String[] args) {
Thread thread=new Thread();
thread.start();// run()
/** Thread run
* public void run() {
if (target != null) {
target.run();
}
}
run , run() ,
*/
// 1 thread ( )
Thread thread1=new Thread(){
public void run() {
while(true){
try {
Thread.sleep(500);// 500
} catch (InterruptedException e) {
e.printStackTrace();
}
//Thread.currentThread()
System.out.println(" 1 "+Thread.currentThread().getName());
}
}
};
// thread1.start(); //
// 2 runnable ( )
Thread thread2=new Thread(new Runnable(){
public void run() {
while(true){
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("thread2'name is "+Thread.currentThread().getName());
}
}});
// thread2.start();
// thread
new Thread(new Runnable(){
public void run() {
System.out.println("runnable "+Thread.currentThread().getName());
}}){
public void run() { // run run , runnable
System.out.println("thread "+Thread.currentThread().getName());
}
}.start();
}
/***
* cpu
*/
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.